import { defineConfig, ConfigEnv, UserConfig, loadEnv } from 'vite';
import { wrapperEnv } from './build/getEnv.ts';
import vue from '@vitejs/plugin-vue';
import presetEnv from 'postcss-preset-env';
// import path from 'path'

// less sass 这些 在 vite 直接下载  less sass 本身包就行了 不用像 webpack 要配置什么loader 什么插件 这些

export default defineConfig(({ command, mode }: ConfigEnv): UserConfig => {
  console.log(command);
  // console.log(mode);

  // console.log(__dirname)
  // console.log(process.cwd())

  const root = process.cwd();

  // 默认读取node环境变量
  // console.log(process.env)
  // mode 表示当前情景 root表示项目根路径，'' 表示前缀，''默认读取所有的环境变量
  const env = loadEnv(mode, root, 'VITE_');
  console.log(env);

  // const { VITE_PORT, VITE_OPEN } = env;
  // const port  = Number(VITE_PORT) || 3000;
  // const open  = Boolean(VITE_OPEN) || true;
  const viteEnv = wrapperEnv(env);

  return {
    root,
    plugins: [vue()],
    server: {
      port: viteEnv.VITE_PORT,
      open: viteEnv.VITE_OPEN,
    },
    esbuild: {
      pure: viteEnv.VITE_DROP_CONSOLE ? ['console.log', 'debugger'] : [],
    },
    optimizeDeps: {
      exclude: ['lodash-es'],
    },
    css: {
      preprocessorOptions: {
        scss: {
          //注意最后要加上分号;
          // 每个 scss 里面都自动 `@import "./src/styles/var.scss";`公共文件
          additionalData: `@import "./src/styles/var.scss";`,
        },
      },
      modules: {
        // name 表示当前文件名，local 表示当前类名，hash 表示hash值
        // 对 xx.module.scss 导出类名 规则
        generateScopedName: '[name]_[local]_[hash:base64:5]',
      },
      // css 后处理器
      // 可以单独文件配置
      postcss: {
        plugins: [
          // 预设 整合一些常用的 插件
          presetEnv({
            browsers: ['last 2 versions', '> 1%', 'IE 11'], // 哪些浏览器需要加前缀
            autoprefixer: { grid: true }, // css 兼容性不好的样式 自动添加前缀
          }),
        ],
      },
    },
  };
});

// 浏览器支持列表 可以通过package.json配置
// "browserslist":{
//   "production": [
//     "last 4 versions",
//     ">0.2%",
//     "not dead",
//     "not op_mini all"
//   ],
//   "development": [
//     "last 2 versions",
//     ">1%",
//     "IE 11"
//   ]
// }
